The Internet's bandwidth continues to double every year. Some of this additional bandwidth is consumed, however, as new users access the Internet. Still additional bandwidth is consumed as existing users increase their use of the Internet. This increase of Internet use translates into an increase in traffic directed to and from various servers and through various networking components.
While some networking components are less costly they may still generally require a distribution mechanism to spread the workload so that each networking component performs work proportional to its capacity. Without proper placement and/or application of a networking component, eventually a network infrastructure may not be able to process its traffic in a timely manner.
In high availability networking environments, one or more servers, caches, and/or other network components may be backed-up via a fail-over system, such that if the primary component fails, a backup component may replace it. Such fail-over implementations, wherein one component is replaced by another component may, however, complicate many traditional load balancing mechanisms.
Load-balancing of cache servers and/or proxy servers may have unique load-balancing requirements over other types of services. For example, it may not be realistic to attempt to cache an entire network site, application, or the like, on a single cache device. A typical solution therefore, is to load balance requests for content and to persist subsequent requests to a specific cache device based on the content being requested. In a forward proxy example, all requests for one site might then be configured to be sent to a first cache device, while requests for a second site might be configured to be sent to a second cache device. Since each cache device would get all the requests fro their respective sties, they will typically have the most up to date version of the content cached. One problem however often arises when a cache device is removed or new cache devices are added, such as during fail-over situations, or the like. In traditional situations, the new cache devices may not receive requests. For example, if all content is already persisted to an existing cache device, the newly added cache device might remain unused until the content changes or a content's persistence timer expires, resulting in wasted resources. Moreover, when an existing cache device is removed from a pool of cache devices, reassigning requests to another cache device may take considerable time to repopulate the other cache device with new content.